iT邦幫忙

2025 iThome 鐵人賽

DAY 26
0
Modern Web

【網頁是什麼,能吃嗎】── 零基礎也能學會網頁製作系列 第 26

【Day 26】mongoose 的使用 ── Vue.js 實作篇

  • 分享至 

  • xImage
  •  

今日筆者想來淺談一下 mongodb 與 mongoose 這兩個Node.js package 之間的差異。
會想以這一點做討論,是因為在查詢資料時看到許多其他使用者都使用 mongoose ,而非官方範例中所使用的 mongodb ,因此筆者產生了疑問:「這兩者究竟有什麼差異,在實作上哪一個會是更佳的選擇」。那麼就讓我們直接開始今日的內容吧!


這兩個東西各自是什麼?

總結來說:

  • MongoDB:資料庫本體(NoSQL、文件導向)。
  • Mongoose:在 Node.js 上操作 MongoDB 的 ODM(Object Data Modeling)套件,包在官方 mongodb driver 之上,提供「Schema、驗證、Middleware、Model API」。

MongoDB

  • 一套文件導向資料庫(BSON/JSON-like)。Schema 可彈性演進。
  • 直接用官方 Node.js Driver 存取:npm i mongodb,自己寫查詢、索引、交易、聚合管線等。
  • 適合需要完全掌控與極致效能的場景。某些測試中,原生 driver 讀寫表現可優於使用 ODM 的層(案例:原生 ~2× 於 Mongoose;仍以實際設計與索引為主)。

Mongoose

  • 不是資料庫、也不是替代品;它是建立在官方 driver 之上的 ODM 工具
  • 特色:Schema/Model 定義、驗證、型別轉換、Hook/Middleware、關聯(ref/populate),讓程式碼像在操作物件。
  • 對團隊協作很友善(尤其從 SQL 背景轉來的人會喜歡「可預期的結構」)。

該何時使用?

  • 選 MongoDB 原生 driver 當你需要:

    • 更細的控制、盡量貼近資料庫能力(例如複雜聚合、交易、效能微調)。
    • 想避開 ODM 額外抽象層的開銷與限制。
  • 選 Mongoose 當你需要:

    • 清楚的 Schema 與驗證(在應用層先擋髒資料)。
    • Middleware/Hook(如儲存前 hash 密碼、審計欄位)。
    • 更一致的 Model API、物件導向的資料操作體驗。
    • 快速成團、上手教學或多人專案的可維護性。

官方也明講:「不一定要用 ODM,但它能幫你做 data modeling、schema enforcement、validation。」


參考網頁:


上一篇
【Day 25】將專案與資料庫做連接 ── Vue.js 實作篇
下一篇
【Day 27】後端程式碼整理 ── Vue.js 實作篇
系列文
【網頁是什麼,能吃嗎】── 零基礎也能學會網頁製作27
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言